Many types of conventional computing systems operate software programs that require services of various types during their operation. By way of example, a software application such as an Internet web browser which operates (e.g., executes) as a web browser process within a computer system may require audio and/or video playback services, document rendering services, document interpretation services or other services for which service logic (i.e., software code or instructions that provide such services) is not built-in to the web browser application itself. The reason that developers of software applications do not often provide all required service logic for every service within the application code is because service software developers are constantly developing new services that applications may require access to for various purposes. In addition, service capabilities can change when service developers update service logic to accommodate new features or revisions. For these reasons, many conventional software applications access services by incorporating the use of software modules called “plug-ins.”
Generally, a conventional plug-in module is a software procedure, library routine, function, or other entity which a service developer creates to operate in a computer system in order to provide required processing functionality for a particular purpose. The purpose of the plug-in module is referred to as the “service” provided by the plug-in module. A typical plug-in module incorporates the use of a standardized application programming interface (API) that allows other software applications, such as the web browser process mentioned above, to access the service provided by the plug-in module by making a function or system call to the service using the plug-in application programming interface. In operation, the application programming interface for a plug-in module offering a service receives a set of input variable values which the service logic and processing within the plug-in module can operate upon in order to provide the service offered by the plug-in module. The application programming interface can also return or output a result that reflects the performance of the service logic upon the input variable values. A plug-in module may direct the output, for example, to a specific output device such as the computer display or an audio or video output device.
In some instances, a conventional software application might attempt to access or process data that requires a service provided by a plug-in module that is not presently resident within the computer system in which the software application is operating. As an example, consider a situation in which a user directs a web browser to access video data that is arranged in a video format that requires the services of a video plug-in module in order for that web browser to playback the video to the user operating the web browser. Unless the web browser has previously accessed video data in this particular video format, it is unlikely that the plug-in module providing the video playback service is resident on the computer system in which the web browser is operating. The web browser process may automatically make this determination since the video data may specify what plug-in service is required to playback the video data. The web browser can check a list of currently available plug-in services to determine if the required service is available from a resident plug-in. If the web browser process determines that the required plug-in service is not resident on the computer system, the web browser may prompt the user to obtain the required plug-in module that provides the required plug-in service, for example, via downloading the plug-in module from a plug-in developer web site. If the user instructs the web browser to download the plug-in module, the web browser can proceed to obtain (via a download process), install and operate (i.e., run, interpret or otherwise perform or access) the required plug-in module in order to obtain and use the video playback service that the plug-in module provides.